#ifndef CONF_NODE_H_
#define CONF_NODE_H_

#include <boost/shared_ptr.hpp>
#include <boost/utility.hpp>
#include <glibmm.h>

namespace gpyp {
namespace conf {

class Node : boost::noncopyable {
private:
  Glib::ustring name_;

protected:
  virtual bool on_get_dirty() const = 0;
  virtual void on_set_dirty(bool dirty) = 0;

public:
  inline const Glib::ustring &get_name() const {
    return name_;
  }

  inline bool get_dirty() const {
    return on_get_dirty();
  }
  inline void set_dirty(bool dirty) {
    on_set_dirty(dirty);
  }

protected:
  Node(const Glib::ustring &name);
public:
  virtual ~Node();
};
typedef boost::shared_ptr<Node> RefNode;

}/*conf*/
}/*gpyp*/

#endif/*CONF_NODE_H_*/
